

const { user } = require('../model')

module.exports = async (ctx, next) => {

    // session中的userId
    // 当前的路径
    var userId = ctx.session.userId;
    var path = ctx.path;

    // userId为空则未登录
    // 手动指定登录页面时，应该放行；否则则重定向到登录页面
    // 当前已经在登录页面，放行
    // 不在登陆页面，强制指向登陆页面
    if (!userId) {

        if (path === '/user' || path === '/admin') {
            await next();
        } else {
            ctx.redirect('/user');
        };
    } else {
        //userId不为空则已经登录
        // 管理员和普通用户强制返回的首页页面不一样

        var userRole = JSON.parse(JSON.stringify(await user.findOne({
            where: {
                id: userId
            }
        })));
        if (userRole.isAdmin === '1') {

            // 普通用户
            // 不允许返回登录页面，除非注销userId
            // 想返回登录页面时，强制指向登录成功后
            //路由等于管理员页面
            // 除登陆页面和管理员页面以外都放行
            if (path === '/user') {
                ctx.redirect('/');
            } else if (path === '/admin') {
                ctx.redirect('/');
            } else if (path === '/manager') {
                ctx.redirect('/');
            } else {
                await next();
            }

        } else if (userRole.isAdmin === '2') {

            // 管理员
            // 不允许返回登录页面，除非注销userId
            // 想返回登录页面时，强制指向登录成功后
            //路由等于普通页面
            if (path === '/user' || path === '/admin') {
                ctx.redirect('/manager');
            } else if (path === '/') {
                ctx.redirect('/manager');
            }
            else {
                await next();
            }
        }
    }
}